/*
 * bfx.h
 *
 *  Created on: Jan 29, 2013
 *      Author: Lucifer
 */

#ifndef __BFX_H__
#define __BFX_H__

#include <stdio.h>
#include <stddef.h>

#ifdef	_WIN32

// #define   WIN32_LEAN_AND_MEAN
#include <WinSock2.h>
#include <Windows.h>

#else	//	_WIN32

#include <unistd.h>
#include <pthread.h>

#endif	//	_WIN32

#ifdef	_DEBUG
#ifdef	_MSC_VER
#ifdef	__USE_VLD__	// Visual Leak Detector.
#include <vld.h>
#endif	//	__USE_VLD__
#endif	//	_MSC_VER
#endif	//	_DEBUG

namespace BFX
{
// slowly but support copy constructor, assign operator, destructor...etc.
template<typename T>
void CopyObjects(T* pDestArray, T* pSrcArray, int nLength)
{
	while (--nLength >= 0)
		pDestArray[nLength] = pSrcArray[nLength];
}
}	//	namespace BFX

#include <BFX/common/Typedefs.h>
#include <BFX/common/Contract.h>

#include <BFX/common/Interlocked.h>
#include <BFX/common/Holder.h>
#include <BFX/common/Lock.h>

#include <BFX/ref/REFObject.h>
#include <BFX/ref/REFAutoreleasePool.h>

#include <BFX/common/Array.h>
#include <BFX/common/List.h>
#include <BFX/common/HashSet.h>
#include <BFX/common/HashMap.h>

#include <BFX/common/Sequence.h>
#include <BFX/common/String.h>

#include <BFX/unicode/REFEncoding.h>
#include <BFX/unicode/UniString.h>
#include <BFX/unicode/REFUniStringBuilder.h>
#include <BFX/unicode/REFUniTextWriter.h>
#include <BFX/unicode/REFUniTextReader.h>

#include <BFX/xml/REFXMLReader.h>
#include <BFX/xml/REFXMLWriter.h>
#include <BFX/xml/REFXMLDocument.h>

#endif /* __BFX_H__ */
